package lero.mapper;

import lero.pojo.Admin;
import lero.pojo.Author;
import lero.vo.AuthorVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Created by Authoristrator on 2018/7/19.
 */
public interface AuthorMapper {

    /**
     *功能描述: 新增权限
     * @date 2018/7/19
     * @param author
     * @return void
     */
    void insert(Author author);

    /**
     *功能描述: 分页条件查询
     * @date 2018/7/19
     * @param
     * @return java.util.List<lero.pojo.Author>
     */
    List<Author> select(AuthorVo vo);

    /**
     *功能描述:
     * @date 2018/7/10
     * @param id :查询权限的id
     * @return lero.pojo.Author
     */
    Author selectOne(int id);


    /**
     *功能描述: 删除单个权限
     * @date 2018/7/19
     * @param id
     * @return void
     */
    void  delete(int id);

    /**
     *功能描述: 批量删除权限
     * @date 2018/7/19
     * @param ids
     * @return void
     */
    void  deleteMany(int[] ids);


    /**
     *功能描述: 编辑权限
     * @date 2018/7/19
     * @param author : 权限对象
     * @return void
     */
    void  update(Author author);



    /**
     *功能描述: 获取权限菜单树
     * @date 2018/7/19
     * @return java.util.List<lero.pojo.Author>
     */
    List<Map<String,Object>> getTree();


    /**
     *功能描述: 查询当前角色的拥有和未拥有的权限
     * @date 2018/7/20
     * @param roleId
     * @return java.util.List<lero.pojo.Author>
     */
    List<Map<String,Object>> selectAuthorByCurrentRole(int roleId);

    /**
     *功能描述:  给当前角色赋予权限
     * @date 2018/7/20
     * @param authorIds :权限id数组
     * @param roleId ： 角色id
     * @return void
     */
    void  saveAuthorIntoCurrentRole(@Param("authorIds") int[] authorIds,@Param("roleId") int roleId);

    /**
     *功能描述: 删除当前角色拥有的权限
     * @date 2018/7/20
     * @param roleId ：角色id
     * @return void
     */
    void deleteAuthorByCurrentRole(int roleId);


    /**
     *功能描述: 查询当前用户权限
     * @date 2018/7/20
     * @param admin
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String,Object>>   selectCurentAdminMenuAuthor(Admin admin);

    /**
     *功能描述: 查询当前用户拥有权限
     * @date 2018/7/23
     * @param admin
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String,Object>>   selectCurrentAdminOwnAuthor(Admin admin);

}
